<%@ page pageEncoding="UTF-8"%>
<%@ include file="/common/common.jsp"%>
<%!
	public Map getMap(List<Map> result , Map<String,String> deptMap){
	
		//处理结合数据
		for(Map map : result){
		
			String ksdm = map.get("ksdm") == null ? "0" : map.get("ksdm").toString();
			map.put("name",deptMap.get(ksdm));
			
		}
		
		Map<String,Object> resMap = new HashMap<String,Object>();
		resMap.put("rank",result);
		
		return resMap;
	}
	// 将map按照时间字段值降序
	class MapComparator implements Comparator<Map> {
		@Override
		public int compare(Map map1, Map map2) {
			double time1 = 0;
			double time2 = 0;
			try {
				time1 = Double.parseDouble(Tools.getDesc(map1.get("xmje").toString()));
				time2 = Double.parseDouble(Tools.getDesc(map2.get("xmje").toString()));
				
			} catch (Exception e) {
				e.printStackTrace();
			}
			return (time1 > time2) ? -1 : (time1 == time2) ? 0 : 1;
		}
	}
%>
<%
	//查询门诊收入的科室排名
	String yydm =  input.getDesc("yydm","02");//医院代码
	String ksdm = input.getDesc("ksdm","-1"); //传入科室代码代表该科室主任
	String date = input.getDesc("start_date","2018-01-28");//开始时间
	String endDa = input.getDesc("end_date","2018-01-28");//结束时间

	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMMdd");
	String nowDate = sdf2.format(sdf.parse(date));
	String nowEndDa = sdf2.format(sdf.parse(endDa));
	
	String startDate = nowDate+"00:00:00";
	String endDate = nowEndDa+"23:59:59";

	String sqlWhere = " " ;
	
	if(!yydm.equals("-1"))
		sqlWhere += " and a.ksdm in (select id from YY_KSBMK where mjzbz='2' and yydm ='"+yydm+"') " ;
	if(!"-1".equals(ksdm)){
		sqlWhere += " and a.ksdm = " + ksdm;
	}

	//获取所有科室
	List<Map> deptList = QBuilder.db("basedb").queryHql("select new map(id as id , name as name ) from his_dept ");
	Map<String,String> deptMap = new HashMap<String,String>();
	//科室放到map中 key-value(id-name)
	for(Map map : deptList){
		deptMap.put(map.get("id").toString(),map.get("name").toString());
	}


	//费用明细集合
	//List<Map> feelist = QBuilder.db("basedb").queryHql("select new map( sum(js.zje) as xmje,js.ksdm as ksdm) from  SF_BRJSK js where js.ybjszt=2  and js.jlzt = 0 " + sqlWhere +" group by ksdm order by sum(js.zje) desc");

	DecimalFormat df = new DecimalFormat("######0.0000"); 
	int i = 0 ;

	

		
	String mzsql = "\n" +
                "select a.ksdm , sum(convert(numeric(20,4),case when  d.ypbz in (1,2,3) then (case when 0=1 then b.ylsj else b.ylsj-b.yhdj end)*b.ypsl*b.ts*b.cfts/b.ykxs else 0 end)) ypje    \n" +
                ",sum(convert(numeric(20,4),case when  d.ypbz not in (1,2,3) then (case when 0=1 then b.ylsj else b.ylsj-b.yhdj end)*b.ypsl*b.ts*b.cfts/b.ykxs else 0 end)) mzylsr     \n" +
                "from VW_MZCFK a (nolock)  \n" +
                "inner join  VW_CFMXK b (nolock) on b.cfxh = a.xh   \n" +
                "inner join  YY_YBFLK c (nolock) on a.ybdm = c.ybdm  \n" +
                "inner join YY_SFDXMK d (nolock) on d.id = b.dxmdm    \n" +
                "where a.lrrq between  '"+nowDate+"00000' and '"+nowEndDa+"24000'  \n" +sqlWhere +" \n"+
                " and a.jsbz = 1     \n" +
                " and a.jlzt in (0,1,2,3,4)       \n" +
                "group by substring(a.lrrq,1,8),a.ksdm  \n";
				//0:正常，1:退方,2红冲,3:家床取消,4：家床取消红冲 
	List<Map> resultList = null;
	
	StatelessSession ss =  DBTools.db("basedb").getSf().openStatelessSession();
      
	try {
		 ss.beginTransaction();
	
		 SQLQuery lbsqlQuery = ss.createSQLQuery(mzsql);
		 lbsqlQuery.setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP);
         resultList = lbsqlQuery.list();
		 
		 ss.getTransaction().commit();
		 ss.close();
		
    }catch (Exception e){
	    ss.getTransaction().commit();
		 ss.close();
    }
	 if(resultList != null && resultList.size() > 0){
		 for(Map reMap : resultList){
			 double ypje = Double.parseDouble(reMap.get("ypje").toString());//药品收入  
			 double mzylsr = Double.parseDouble(reMap.get("mzylsr").toString());//门诊医疗收入 
			 reMap.put("xmje",df.format((ypje+mzylsr)/10000));
		 }
	 }
	
	
	Collections.sort(resultList, new MapComparator());
	Map<String,Object> ma1 = new HashMap<String,Object>();
	ma1.put("ksMap",getMap(resultList,deptMap));
	Message msg = new Message();

	msg.put("errcode",0);
	msg.put("chEmergency",ma1);

	out.println(msg);
%>